iT邦幫忙

2023 iThome 鐵人賽

DAY 11
0
Odoo

Odoo開發系列 第 11

[Day 11]odoo14 - 建立report(一)

  • 分享至 

  • xImage
  •  

今天準備要來跟大家介紹report,現在先來講解建立model的部分。
範例如下:

from odoo import api, models, fields


class IDXRepairReport(models.AbstractModel):
    _name = 'report.idx_interview.idx_repair'
    _description = '維修報表'

    @api.model
    def _get_report_values(self, docids, data=None):
        docs = self.env['idx.repair'].browse(docids)
        return {
            'doc_ids': docids,
            'doc_model': 'idx.repair',
            'docs': docs,
            'data': data,
        }

從上面的範例中可以發現,建立report的model時是使用AbstractModel,在建立這個類型的model時並不會在資料庫產生實際的資料表,通常用於報表或wizard類的model。

_name:固定以'report.' + module名稱 + 自定義的model名稱來做命名。
_description:model的說明。

接下來要介紹_get_report_values的用法,這個function是用來在列印報表時提供資料的function,只要建立報表類的model,一定都要定義這個function才行。
下面來一一介紹他的參數:

  • doc_ids:必要的參數,用來記錄要在報表中顯示的資料id,可傳單一筆id或多筆id。
  • doc_model:必要的參數,報表資料來源的model名稱。
  • docs:必要的參數,用來記錄報表上要顯示的資料集,資料集以doc_ids及doc_model來取出需要的資料。
  • data:根據需求可新增的參數,除了上述的docs用來記錄最主要的資料及外,可使用這個參數傳遞其他需要使用的資料,方便報表來使用。

雖然data可以讓使用者放其他報表中需要的資料,如果有許多種類的資料想傳遞,但想為了方便管理而不想把全部的資料放在同一個參數裡的話,也可以自己新增傳遞的參數。
建立報表model先介紹到這邊,明天會換來介紹建立report樣板的部分。


上一篇
[Day 10] odoo14 - kanban view、pivot view及graph view介紹
下一篇
[Day 12] odoo14 - 建立report(二)
系列文
Odoo開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言